home *** CD-ROM | disk | FTP | other *** search
/ Adobe Graphics & Publishing SDK 1996 December / Adobe Graphics & Publishing SDK 1996 December.iso / pc / ps40sdk / examples / common / headers.h / piactions.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-11-11  |  21.5 KB  |  701 lines

  1. /*
  2.     File: PIActions.h
  3.  
  4.     Copyright (c) 1996, Adobe Systems Incorporated.
  5.     All rights reserved.
  6.  
  7.     This file describes Photoshop's scripting interface.
  8. */
  9.  
  10. #ifdef    __GNUG__
  11. // Must be placed before _ANY_ #include lines!!!
  12. #pragma interface
  13. #endif    // __GNUG__
  14.  
  15. #ifndef __PIActions__
  16. #define __PIActions__
  17.  
  18. #ifndef MSWindows
  19. #define MSWindows (MSDOS || WIN32)
  20. #endif
  21.  
  22. #ifndef INSIDE_PHOTOSHOP
  23. #define INSIDE_PHOTOSHOP 0
  24. #endif
  25.  
  26. #ifdef Rez
  27.  
  28. #ifdef SystemSevenOrLater
  29. #undef SystemSevenOrLater
  30. #endif
  31.  
  32. #define SystemSevenOrLater 1
  33.  
  34. #if !MSWindows
  35. #include "Types.r"
  36. #include "AEUserTermTypes.r"
  37. #include "AppleEvents.r"
  38. #endif
  39.  
  40. #else
  41.  
  42. #include "PITypes.h"
  43.  
  44. #if !MSWindows && !INSIDE_PHOTOSHOP
  45. #include "AERegistry.h"
  46. #endif
  47.  
  48. #endif
  49.  
  50. /********************************************************************************/
  51.  
  52. /* Flags for parameters */
  53.  
  54. #define flagsSingleParameter                    \
  55.     required,            singleItem,        notEnumerated,    reserved,    \
  56.     reserved,            reserved,        reserved,        reserved,    \
  57.     reserved,            reserved,        reserved,        reserved,    \
  58.     prepositionParam,    notFeminine,    notMasculine,    singular
  59.  
  60. #define flagsListParameter                        \
  61.     required,            listOfItems,    notEnumerated,    reserved,    \
  62.     reserved,            reserved,        reserved,        reserved,    \
  63.     reserved,            reserved,        reserved,        reserved,    \
  64.     prepositionParam,    notFeminine,    notMasculine,    singular
  65.  
  66. #define flagsEnumeratedParameter                \
  67.     required,            singleItem,        enumerated,        reserved,    \
  68.     reserved,            reserved,        reserved,        reserved,    \
  69.     reserved,            reserved,        reserved,        reserved,    \
  70.     prepositionParam,    notFeminine,    notMasculine,    singular
  71.  
  72. #define flagsEnumeratedListParameter            \
  73.     required,            listOfItems,    enumerated,        reserved,    \
  74.     reserved,            reserved,        reserved,        reserved,    \
  75.     reserved,            reserved,        reserved,        reserved,    \
  76.     prepositionParam,    notFeminine,    notMasculine,    singular
  77.  
  78. #define flagsOptionalSingleParameter            \
  79.     optional,            singleItem,        notEnumerated,    reserved,    \
  80.     reserved,            reserved,        reserved,        reserved,    \
  81.     reserved,            reserved,        reserved,        reserved,    \
  82.     prepositionParam,    notFeminine,    notMasculine,    singular
  83.  
  84. #define flagsOptionalListParameter                \
  85.     optional,            listOfItems,    notEnumerated,    reserved,    \
  86.     reserved,            reserved,        reserved,        reserved,    \
  87.     reserved,            reserved,        reserved,        reserved,    \
  88.     prepositionParam,    notFeminine,    notMasculine,    singular
  89.  
  90. #define flagsOptionalEnumeratedParameter        \
  91.     optional,            singleItem,        enumerated,        reserved,    \
  92.     reserved,            reserved,        reserved,        reserved,    \
  93.     reserved,            reserved,        reserved,        reserved,    \
  94.     prepositionParam,    notFeminine,    notMasculine,    singular
  95.  
  96. #define flagsOptionalEnumeratedListParameter    \
  97.     optional,            listOfItems,    enumerated,        reserved,    \
  98.     reserved,            reserved,        reserved,        reserved,    \
  99.     reserved,            reserved,        reserved,        reserved,    \
  100.     prepositionParam,    notFeminine,    notMasculine,    singular
  101.  
  102. /* Flags for object propeties */
  103.  
  104. #define flagsSingleProperty                        \
  105.     reserved,            singleItem,        notEnumerated,    readWrite,    \
  106.     reserved,            reserved,        reserved,        reserved,    \
  107.     reserved,            reserved,        reserved,        reserved,    \
  108.     noApostrophe,        notFeminine,    notMasculine,    singular
  109.  
  110. #define flagsListProperty                        \
  111.     reserved,            listOfItems,    notEnumerated,    readWrite,    \
  112.     reserved,            reserved,        reserved,        reserved,    \
  113.     reserved,            reserved,        reserved,        reserved,    \
  114.     noApostrophe,        notFeminine,    notMasculine,    singular
  115.  
  116. #define flagsEnumeratedProperty                    \
  117.     reserved,            singleItem,        enumerated,        readWrite,    \
  118.     reserved,            reserved,        reserved,        reserved,    \
  119.     reserved,            reserved,        reserved,        reserved,    \
  120.     noApostrophe,        notFeminine,    notMasculine,    singular
  121.  
  122. #define flagsEnumeratedListProperty                \
  123.     reserved,            listOfItems,    enumerated,        readWrite,    \
  124.     reserved,            reserved,        reserved,        reserved,    \
  125.     reserved,            reserved,        reserved,        reserved,    \
  126.     noApostrophe,        notFeminine,    notMasculine,    singular
  127.  
  128. /* Flags for direct parameters */
  129.  
  130. #define flagsOptionalEnumeratedChangesDirect    \
  131.     directParamOptional,    singleItem,    enumerated,    changesState,    \
  132.     reserved,                reserved,    reserved,    reserved,        \
  133.     reserved,                reserved,    reserved,    reserved,        \
  134.     reserved,                reserved,    reserved,    reserved
  135.  
  136. #define flagsEnumeratedChangesDirect    \
  137.     directParamRequired,    singleItem,    enumerated,    changesState,    \
  138.     reserved,                reserved,    reserved,    reserved,        \
  139.     reserved,                reserved,    reserved,    reserved,        \
  140.     reserved,                reserved,    reserved,    reserved
  141.  
  142. #define flagsEnumeratedDirect    \
  143.     directParamRequired,    singleItem,    enumerated,    doesntChangeState,    \
  144.     reserved,                reserved,    reserved,    reserved,            \
  145.     reserved,                reserved,    reserved,    reserved,            \
  146.     reserved,                reserved,    reserved,    reserved
  147.  
  148. #define flagsChangesDirect    \
  149.     directParamRequired,    singleItem,    notEnumerated,    changesState,    \
  150.     reserved,                reserved,    reserved,        reserved,        \
  151.     reserved,                reserved,    reserved,        reserved,        \
  152.     reserved,                reserved,    reserved,        reserved
  153.  
  154. /********************************************************************************/
  155.  
  156. /* Handy short cuts */
  157.  
  158. #define NO_REPLY        \
  159.     noReply,            \
  160.     "",                    \
  161.     replyRequired,    singleItem,    notEnumerated,    notTightBindingFunction,    \
  162.     reserved,        reserved,    reserved,        reserved,                    \
  163.     reserved,        reserved,    reserved,        reserved,                    \
  164.     verbEvent,        reserved,    reserved,        reserved
  165.  
  166. #define IMAGE_DIRECT_PARAMETER    \
  167.     typeImageReference,            \
  168.     "",                            \
  169.     flagsOptionalEnumeratedChangesDirect
  170.     
  171. /********************************************************************************/
  172.  
  173. /* Normalize the AppleScript terminology */
  174.  
  175. #if MSWindows    // These items come from AppleScript
  176.  
  177. #define formName                'name'
  178.  
  179. #define typeFloat                'doub'
  180. #define typeInteger                'long'
  181. #define typeBoolean                'bool'
  182. #define typeAlias                'alis'
  183. #define typeNull                'null'
  184. #define    roman                    0
  185. #define english                    0
  186. #define japanese                11
  187. #define noReply                    typeNull
  188.  
  189. #ifndef __APPLEEVENTS__
  190. #define typeType                'type'
  191. #define typeChar                'TEXT'
  192. #define typeObjectSpecifier        'obj '
  193. #endif /* __APPLEEVENTS __ */
  194.  
  195. #ifndef __AEOBJECTS__
  196. #define formAbsolutePosition    'indx'
  197. #define formPropertyID            'prop'
  198. #endif /* __AEOBJECTS__ */
  199.  
  200. #endif /* MSWindows */
  201.  
  202. #if INSIDE_PHOTOSHOP
  203. #define keySelection            'fsel'    // keySelection
  204. #endif
  205.  
  206. #define keyInherits                'c@#^'    /* Hey, Apple defined it! */
  207.  
  208. #define formIndex                formAbsolutePosition
  209. #define formEnumerated            'Enmr'
  210. #define formProperty            formPropertyID
  211.  
  212. #define typePath                'Pth '
  213. #define typeClass                typeType
  214. #define typeText                typeChar
  215. #define typeObjectReference        typeObjectSpecifier
  216. #define typeUnitFloat            'UntF'    /* special type for unit values */
  217.  
  218. #if MSWindows
  219. #define typePlatformFilePath    typePath
  220. #else
  221. #define typePlatformFilePath    typeAlias
  222. #endif
  223.  
  224. #define unitDistance            '#Rlt'    /* unit value - base 72ppi */
  225. #define unitAngle                '#Ang'    /* unit value - base degrees */
  226. #define unitDensity                '#Rsl'    /* unit value - base per inch */
  227.  
  228. #define unitPixels                '#Pxl'    /* tagged unit value */
  229. #define unitPercent                '#Prc'    /* tagged unit value */
  230.  
  231. /* Object types supplied by Photoshop */
  232.  
  233. #define classColor                'Clr '
  234. #define typeClassColor            '#Clr'
  235.  
  236. #define classRGBColor            'RGBC'    /* keyRed, keyGreen, keyBlue */
  237. #define classCMYKColor            'CMYC'    /* keyCyan, keyMagenta, keyYellow, keyBlack */
  238. #define classUnspecifiedColor    'UnsC'
  239. #define classGrayscale            'Grsc'    /* keyGray */
  240. #define classBookColor            'BkCl'
  241. #define classLabColor            'LbCl'
  242. #define classHSBColor            'HSBC'
  243.  
  244. #define classPoint                'Pnt '    /* keyHorizontal, keyVertical */
  245.  
  246. /* Class types for plug-ins */
  247.  
  248. #define classImport                'Impr'
  249.     #define keyImport                'Impr'
  250.  
  251. #define classExport                'Expr'
  252.     #define keyExport                'Expr'
  253.  
  254. #define classFormat                'Fmt '
  255.     #define kFormatProperty            'Fmt '
  256.  
  257. /* Enumeration supplied by Photoshop */
  258.  
  259. #define typeOrientation            'Ornt'
  260.     #define enumHorizontal            'Hrzn'
  261.     #define enumVertical            'Vrtc'
  262.  
  263. #define typeOrdinal                'Ordn'
  264.     #define enumAll                    'Al  '
  265.     #define enumFirst                'Frst'
  266.     #define enumLast                'Lst '
  267.     #define enumNext                'Nxt '
  268.     #define enumPrevious            'Prvs'
  269.     #define enumMiddle                'Mddl'
  270.     #define enumAny                    'Any '
  271.     #define enumNone                'None'
  272.     #define enumTarget                'Trgt'
  273.     #define enumForward                'Frwr'
  274.     #define enumBackward            'Bckw'
  275.     #define enumFront                'Frnt'
  276.     #define enumBack                'Back'
  277.     
  278. /* Common properties and parameters */
  279.  
  280. #define keyA                    'A   '
  281. #define keyAdjustment            'Adjs'
  282. #define keyAmount                'Amnt'
  283. #define keyAngle                'Angl'
  284. #define keyAntiAlias            'AntA'
  285. #define keyApply                'Aply'
  286. #define keyArea                    'Ar  '
  287. #define keyAs                    'As  '
  288. #define keyAt                    'At  '
  289. #define keyAuto                    'Auto'
  290. #define keyAxis                    'Axis'
  291. #define keyB                    'B   '
  292. #define keyBackgroundColor        'BckC'
  293. #define keyBlack                'Blck'
  294. #define keyBlue                    'Bl  '
  295. #define keyBook                    'Bk  '
  296. #define keyBrightness            'Brgh'
  297. #define keyBy                    'By  '
  298. #define keyCenter                'Cntr'
  299. #define keyChannel                'Chnl'
  300. #define keyChannels                'Chns'        // Breaks rule for plural
  301. #define keyColor                'Clr '
  302. #define keyColorize                'Clrz'
  303. #define keyCompression            'Cmpr'
  304. #define keyContinue                'Cntn'
  305. #define keyContrast                'Cntr'
  306. #define keyCustom                'Cstm'
  307. #define keyCyan                    'Cyn '
  308. #define keyDatum                'Dt  '
  309. #define keyDepth                'Dpth'
  310. #define keyDistance                'Dstn'
  311. #define keyDistribution            'Dstr'
  312. #define keyDither                'Dthr'
  313. #define keyDuplicate            'Dplc'
  314. #define keyEdge                    'Edg '
  315. #define keyEncoding                'Encd'
  316. #define keyExtend                'Extd'
  317. #define keyFill                    'Fl  '
  318. #define keyFlatness                'Fltn'
  319. #define keyForegroundColor        'FrgC'
  320. #define keyFrequency            'Frqn'
  321. #define keyFrom                    'From'
  322. #define keyFuzziness            'Fzns'
  323. #define keyGamma                'Gmm '
  324. #define keyGray                    'Gry '
  325. #define keyGreen                'Grn '
  326. #define keyGroup                'Grup'
  327. #define keyHalftoneScreen        'HlfS'
  328. #define keyHeight                'Hght'
  329. #define keyHorizontal            'Hrzn'
  330. #define keyHue                    'H   '
  331. #define keyIn                    'In  '
  332. #define keyInput                'Inpt'
  333. #define keyInterpolation        'Intr'
  334. #define keyInvert                'Invr'
  335. #define keyKind                    'Knd '
  336. #define keyLevel                'Lvl '
  337. #define keyLevels                'Lvls'
  338. #define keyLightness            'Lght'
  339. #define keyLocation                'Lctn'
  340. #define keyLuminance            'Lmnc'
  341. #define keyMagenta                'Mgnt'
  342. #define keyMatrix                'Mtrx'
  343. #define keyMaximum                'Mxm '
  344. #define keyMerged                'Mrgd'
  345. #define keyMessage                'Msge'
  346. #define keyMethod                'Mthd'
  347. #define keyMinimum                'Mnm '
  348. #define keyMode                    'Md  '
  349. #define keyMonochromatic        'Mnch'
  350. #define keyName                    'Nm  '
  351. #define keyNew                    'Nw  '
  352. #define keyOffset                'Ofst'
  353. #define keyOpacity                'Opct'
  354. #define keyOptimized            'Optm'
  355. #define keyOutput                'Otpt'
  356. #define keyPalette                'Plt '
  357. #define keyPosition                'Pstn'
  358. #define keyPreview                'Prvw'
  359. #define keyOrientation            'Ornt'
  360. #define keyQuality                'Qlty'
  361. #define keyRadius                'Rds '
  362. #define keyRatio                'Rt  '
  363. #define keyRed                    'Rd  '
  364. #define keyRelative                'Rltv'
  365. #define keyResample                'Rsmp'
  366. #define keyResolution            'Rslt'
  367. #define keyResponse                'Rspn'
  368. #define keySaturation            'Strt'
  369. #define keySavePaths            'SvPt'
  370. #define keyScale                'Scl '
  371. #define keyScans                'Scns'
  372. #define keyShape                'Shp '
  373. #define keySkew                    'Skew'
  374. #define keyThreshold            'Thsh'
  375. #define keyTo                    'T   '
  376. #define keyType                    'Type'
  377. #define keyUntitled                'Untl'
  378. #define keyUsing                'Usng'
  379. #define keyValue                'Vl  '
  380. #define keyVertical                'Vrtc'
  381. #define keyWidth                'Wdth'
  382. #define keyWith                    'With'
  383. #define keyYellow                'Ylw '
  384.  
  385. /* Photoshop object reference types */
  386.  
  387. #define classChannel            'Chnl'
  388. #define typeChannelReference    '#ChR'
  389. #define typeImageReference        '#ImR'    /* <Enumerated> Used as filter direct paramter */
  390.  
  391. /********************************************************************************/
  392.  
  393. #ifndef Rez
  394.  
  395. /********************************************************************************/
  396.  
  397. #define PIHasTerminologyProperty    0x6873746DL    /* 'hstm' <PITerminology> Has <aete, 0> resource:
  398.                                                         version number
  399.                                                         classID:        Object or event class
  400.                                                         eventID:        For events (typeNull otherwise)
  401.                                                         terminologyID:    'aete' resource ID (ignored if PITerminologyProperty)
  402.                                                         scopeString:    Unique string present if
  403.                                                                         AppleScript not supported
  404.                                                 */
  405. #define PITerminologyProperty        0x74726D6EL    /* 'trmn' <aete> Used internaly as terminology cache.
  406.                                                     If present it is used instead of an aete resource.
  407.                                                 */
  408.  
  409. /* These are the flags for recordInfo */
  410.  
  411. enum
  412.     {
  413.     plugInDialogOptional,
  414.     plugInDialogRequired,
  415.     plugInDialogNone
  416.     };
  417.  
  418. /* These flags are used for playInfo */
  419.  
  420. enum
  421.     {
  422.     plugInDialogDontDisplay,
  423.     plugInDialogDisplay,
  424.     plugInDialogSilent
  425.     };
  426.     
  427. /********************************************************************************/
  428.  
  429. /* Flags returned by GetKey (low order word corresponds to AppleEvent flags */
  430.  
  431. #define actionSimpleParameter        0x00000000L
  432. #define actionEnumeratedParameter    0x00002000L
  433. #define actionListParameter            0x00004000L
  434. #define actionOptionalParameter        0x00008000L
  435.  
  436. #define actionObjectParameter        0x80000000L
  437. #define actionScopedParameter        0x40000000L
  438. #define actionStringIDParameter        0x20000000L
  439.  
  440. /********************************************************************************/
  441.  
  442. typedef Handle PIDescriptorHandle;
  443.  
  444. typedef struct PIOpaqueWriteDescriptor*    PIWriteDescriptor;
  445. typedef struct PIOpaqueReadDescriptor*    PIReadDescriptor;
  446.  
  447. typedef unsigned long    DescriptorEventID;
  448. typedef unsigned long    DescriptorClassID;
  449.  
  450. typedef unsigned long    DescriptorKeyID;
  451. typedef unsigned long    DescriptorTypeID;
  452. typedef unsigned long    DescriptorUnitID;
  453. typedef unsigned long    DescriptorEnumID;
  454.  
  455. typedef DescriptorKeyID    DescriptorKeyIDArray[];
  456.  
  457.  
  458. #if PRAGMA_ALIGN_SUPPORTED
  459. #pragma options align=mac68k
  460. #endif
  461.  
  462. #if WIN32
  463. #pragma pack(push,1)
  464. #endif
  465.  
  466. typedef struct PITerminology
  467.     {
  468.     int32    version;
  469.     OSType    classID;
  470.     OSType    eventID;
  471.     int16    terminologyID;
  472.     char    scopeString[1];        // C string
  473.     } PITerminology;
  474.  
  475. #if PRAGMA_ALIGN_SUPPORTED
  476. #pragma options align=reset
  477. #endif
  478.  
  479. #if WIN32
  480. #pragma pack(pop)
  481. #endif
  482.  
  483. #define PITerminologyMinSize 15
  484.  
  485. #if PRAGMA_ALIGN_SUPPORTED
  486. #pragma options align=mac68k
  487. #endif
  488.  
  489. typedef struct PIDescriptorSimpleReference
  490.     {
  491.     DescriptorTypeID    desiredClass;
  492.     DescriptorKeyID        keyForm;
  493.     struct _keyData
  494.         {
  495.         Str255                name;
  496.         int32                index;
  497.         DescriptorTypeID    type;
  498.         DescriptorEnumID    value;
  499.         }                keyData;
  500.     } PIDescriptorSimpleReference;
  501.     
  502. #if PRAGMA_ALIGN_SUPPORTED
  503. #pragma options align=reset
  504. #endif
  505.  
  506. /********************************************************************************/
  507.  
  508. #ifdef __cplusplus
  509. extern "C"
  510.     {
  511. #endif
  512. /********************************************************************************/
  513.  
  514. typedef MACPASCAL PIWriteDescriptor (*OpenWriteDescriptorProc)(void);
  515. typedef MACPASCAL OSErr (*CloseWriteDescriptorProc)(PIWriteDescriptor, PIDescriptorHandle*);
  516.  
  517. typedef MACPASCAL OSErr (*PutIntegerProc)(PIWriteDescriptor, DescriptorKeyID, int32);
  518. typedef MACPASCAL OSErr (*PutFloatProc)(PIWriteDescriptor, DescriptorKeyID, const double*);
  519. typedef MACPASCAL OSErr (*PutUnitFloatProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorUnitID, const double*);
  520. typedef MACPASCAL OSErr (*PutBooleanProc)(PIWriteDescriptor, DescriptorKeyID, Boolean);
  521. typedef MACPASCAL OSErr (*PutTextProc)(PIWriteDescriptor, DescriptorKeyID, Handle);
  522. typedef MACPASCAL OSErr (*PutAliasProc)(PIWriteDescriptor, DescriptorKeyID, Handle);
  523.  
  524. typedef MACPASCAL OSErr (*PutEnumeratedProc)(PIWriteDescriptor, DescriptorKeyID key, DescriptorTypeID type, DescriptorEnumID value);
  525. typedef MACPASCAL OSErr (*PutClassProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID);
  526. typedef MACPASCAL OSErr (*PutSimpleReferenceProc)(PIWriteDescriptor, DescriptorKeyID, const PIDescriptorSimpleReference*);
  527. typedef MACPASCAL OSErr (*PutObjectProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID, PIDescriptorHandle);
  528.  
  529. typedef MACPASCAL OSErr    (*PutCountProc)(PIWriteDescriptor, DescriptorKeyID, uint32 count);
  530.  
  531. typedef MACPASCAL OSErr (*PutStringProc)(PIWriteDescriptor, DescriptorKeyID, ConstStr255Param);
  532.  
  533. /* Scoped classes are not for use by plug-ins in Photoshop 4.0 */
  534.  
  535. typedef MACPASCAL OSErr (*PutScopedClassProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID);
  536. typedef MACPASCAL OSErr (*PutScopedObjectProc)(PIWriteDescriptor, DescriptorKeyID, DescriptorTypeID, PIDescriptorHandle);
  537.  
  538. /********************************************************************************/
  539.  
  540. typedef MACPASCAL PIReadDescriptor (*OpenReadDescriptorProc)(PIDescriptorHandle, DescriptorKeyIDArray);
  541. typedef MACPASCAL OSErr (*CloseReadDescriptorProc)(PIReadDescriptor);
  542. typedef MACPASCAL Boolean (*GetKeyProc)(PIReadDescriptor, DescriptorKeyID* key, DescriptorTypeID* type, int32* flags);
  543.  
  544. typedef MACPASCAL OSErr (*GetIntegerProc)(PIReadDescriptor, int32*);
  545. typedef MACPASCAL OSErr (*GetFloatProc)(PIReadDescriptor, double*);
  546. typedef MACPASCAL OSErr (*GetUnitFloatProc)(PIReadDescriptor, DescriptorUnitID*, double*);
  547. typedef MACPASCAL OSErr (*GetBooleanProc)(PIReadDescriptor, Boolean*);
  548. typedef MACPASCAL OSErr (*GetTextProc)(PIReadDescriptor, Handle*);
  549. typedef MACPASCAL OSErr (*GetAliasProc)(PIReadDescriptor, Handle*);
  550.  
  551. typedef MACPASCAL OSErr (*GetEnumeratedProc)(PIReadDescriptor, DescriptorEnumID*);
  552. typedef MACPASCAL OSErr (*GetClassProc)(PIReadDescriptor, DescriptorTypeID*);
  553. typedef MACPASCAL OSErr (*GetSimpleReferenceProc)(PIReadDescriptor, PIDescriptorSimpleReference*);
  554. typedef MACPASCAL OSErr (*GetObjectProc)(PIReadDescriptor, DescriptorTypeID*, PIDescriptorHandle*);
  555.  
  556. typedef MACPASCAL OSErr (*GetCountProc)(PIReadDescriptor, uint32*);
  557.  
  558. typedef MACPASCAL OSErr (*GetStringProc)(PIReadDescriptor, Str255*);
  559. typedef MACPASCAL OSErr (*GetPinnedIntegerProc)(PIReadDescriptor, int32 min, int32 max, int32*);
  560. typedef MACPASCAL OSErr (*GetPinnedFloatProc)(PIReadDescriptor, const double* min, const double* max, double*);
  561. typedef MACPASCAL OSErr (*GetPinnedUnitFloatProc)(PIReadDescriptor, const double* min, const double* max, DescriptorUnitID*, double*);
  562.  
  563. /********************************************************************************/
  564.  
  565. #ifdef __cplusplus
  566.     }
  567. #endif
  568.  
  569. /********************************************************************************/
  570.  
  571. #define kCurrentWriteDescriptorProcsVersion 0
  572.  
  573. /********************************************************************************/
  574.  
  575. #if PRAGMA_ALIGN_SUPPORTED
  576. #pragma options align=mac68k
  577. #endif
  578.  
  579. typedef struct WriteDescriptorProcs
  580.     {
  581.     int16 writeDescriptorProcsVersion;
  582.     int16 numWriteDescriptorProcs;
  583.     
  584.     OpenWriteDescriptorProc        openWriteDescriptorProc;
  585.     CloseWriteDescriptorProc    closeWriteDescriptorProc;
  586.  
  587.     PutIntegerProc                putIntegerProc;
  588.     PutFloatProc                putFloatProc;
  589.     PutUnitFloatProc            putUnitFloatProc;
  590.     PutBooleanProc                putBooleanProc;
  591.     PutTextProc                    putTextProc;
  592.     PutAliasProc                putAliasProc;
  593.  
  594.     PutEnumeratedProc            putEnumeratedProc;
  595.     PutClassProc                putClassProc;
  596.     PutSimpleReferenceProc        putSimpleReferenceProc;
  597.     PutObjectProc                putObjectProc;
  598.     
  599.     PutCountProc                putCountProc;
  600.     
  601.     PutStringProc                putStringProc;
  602.     
  603.     /* Scoped classes are not for use by plug-ins in Photoshop 4.0 */
  604.     
  605.     PutScopedClassProc            putScopedClassProc;
  606.     PutScopedObjectProc            putScopedObjectProc;
  607.     
  608.     } WriteDescriptorProcs;
  609.  
  610. #if PRAGMA_ALIGN_SUPPORTED
  611. #pragma options align=reset
  612. #endif
  613.  
  614. /********************************************************************************/
  615.  
  616. #define kCurrentWriteDescriptorProcsCount \
  617.     ((sizeof(WriteDescriptorProcs) - offsetof(WriteDescriptorProcs, openWriteDescriptorProc)) / sizeof(void*))
  618.     
  619. /********************************************************************************/
  620.  
  621. #define kCurrentReadDescriptorProcsVersion 0
  622.  
  623. /********************************************************************************/
  624.  
  625. #if PRAGMA_ALIGN_SUPPORTED
  626. #pragma options align=mac68k
  627. #endif
  628.  
  629. typedef struct ReadDescriptorProcs
  630.     {
  631.     int16 readDescriptorProcsVersion;
  632.     int16 numReadDescriptorProcs;
  633.     
  634.     OpenReadDescriptorProc        openReadDescriptorProc;
  635.     CloseReadDescriptorProc        closeReadDescriptorProc;
  636.     GetKeyProc                    getKeyProc;
  637.  
  638.     GetIntegerProc                getIntegerProc;
  639.     GetFloatProc                getFloatProc;
  640.     GetUnitFloatProc            getUnitFloatProc;
  641.     GetBooleanProc                getBooleanProc;
  642.     GetTextProc                    getTextProc;
  643.     GetAliasProc                getAliasProc;
  644.  
  645.     GetEnumeratedProc            getEnumeratedProc;
  646.     GetClassProc                getClassProc;
  647.     GetSimpleReferenceProc        getSimpleReferenceProc;
  648.     GetObjectProc                getObjectProc;
  649.  
  650.     GetCountProc                getCountProc;
  651.     
  652.     GetStringProc                getStringProc;
  653.     GetPinnedIntegerProc        getPinnedIntegerProc;
  654.     GetPinnedFloatProc            getPinnedFloatProc;
  655.     GetPinnedUnitFloatProc        getPinnedUnitFloatProc;
  656.  
  657.     } ReadDescriptorProcs;
  658.  
  659. #if PRAGMA_ALIGN_SUPPORTED
  660. #pragma options align=reset
  661. #endif
  662.  
  663. /********************************************************************************/
  664.  
  665. #define kCurrentReadDescriptorProcsCount \
  666.     ((sizeof(ReadDescriptorProcs) - offsetof(ReadDescriptorProcs, openReadDescriptorProc)) / sizeof(void*))
  667.     
  668. /********************************************************************************/
  669.  
  670. #define kCurrentDescriptorParametersVersion 0
  671.  
  672. /********************************************************************************/
  673.  
  674. #if PRAGMA_ALIGN_SUPPORTED
  675. #pragma options align=mac68k
  676. #endif
  677.  
  678. typedef struct PIDescriptorParameters
  679.     {
  680.     int16                    descriptorParametersVersion;
  681.     int16                    playInfo;
  682.     int16                    recordInfo;
  683.     
  684.     PIDescriptorHandle        descriptor;
  685.     
  686.     WriteDescriptorProcs*    writeDescriptorProcs;
  687.     ReadDescriptorProcs*    readDescriptorProcs;
  688.     } PIDescriptorParameters;
  689.  
  690. #if PRAGMA_ALIGN_SUPPORTED
  691. #pragma options align=reset
  692. #endif
  693.  
  694. /********************************************************************************/
  695.  
  696. #endif
  697.  
  698. /********************************************************************************/
  699.  
  700. #endif
  701.